package main

import "fmt"

type myFunType func(int, int) int

//函数既然是一种数据类型,因此在Go中,函数可以作为形参,并调用
func myFun2(funvar myFunType, num1 int, num2 int) int {
	return funvar(num1, num2)
}
func getSum(n1 int, n2 int) int {
	return n1 + n2
}

//自定义类型
func main() {
	res := myFun2(getSum, 1, 2)
	fmt.Println("res=", res)
	//测试可变参数
	res1 := sum(1, 2, 2)
	fmt.Println("res1=", res1)
}

//可变参数
func sum(n1 int, args ...int) int {
	sum := n1
	for i := 0; i < len(args); i++ {
		sum += args[i]
	}
	return sum
}
